package chapter10.Final01;
//1.final修饰的属性必须赋初值，赋初值的位置有三种位置
//1.1 定义时
//1.2 构造器中
//1.3代码块中
//2.当修饰的属性时static时赋值的地方只能是
//2.1定义时
//2.2静态代码块中

public class FinalDetail {
    public static void main(String[] args) {
        new EE().say();
    }
}
class BB{
    public static final double TAX = 99.9;
    public static final double TAX1;

    static {
        TAX1 = 10;
    }

    public BB() {
        //在这里不能给静态的final赋值
//        因为静态的变量在类加载的时候就要读取，但是构造器只有在创建对象时才执行
//        故在这里不能给static final 赋值
    }
}
//final修饰的方法虽然不能被重写，但是可以被子类继承。
class DD{
    public final void say(){
        System.out.println("say");
    }
}
class EE extends DD{
}